#include<stdio.h>
#include<unistd.h>

//int main()
//{
//   printf("before fork: I am a prcess, pid: %d, ppid: %d\n", getpid(), getppid());
//   fork();
//   printf("after fork: I am a prcess, pid: %d, ppid: %d\n", getpid(), getppid());
//   return 0;
//}


//int main()
//{
//  pid_t id = fork();
//  if(id == 0)
//  {
//    //子进程
//    while(1)
//    {
//      printf("child fork : I am process, pid: %d, ppid: %d\n", getpid(), getppid());
//      sleep(1);
//    }
//  }
//  else{
//    //父进程
//    while(1)
//    {
//      printf("parent fork : I am process, pid: %d, ppid: %d\n", getpid(), getppid());
//      sleep(1);
//    }
//  }
//  return 0;
//
//}
#include<stdlib.h>
#include<sys/types.h>
//const int num = 10;
//
//void Worker()
//{
//    int cnt = 12;
//    while(cnt)
//    {
//        printf("child %d is rnning, cnt: %d\n", getpid(), cnt);
//        cnt--;
//        sleep(1);
//    }
//}
//
//int main()
//{
//    for(int i = 0; i < num ;i++)
//    {
//        pid_t id = fork();
//        if(id < 0) break;
//        if(id == 0){
//            //子进程
//            Worker();
//            exit(0); // C用过, 让子进程直接退出
//        }
//        printf("father create child process success, child pid: %d\n", id);
//        sleep(1);
//    }
//
//    //只有父进程会执行到这里！
//    sleep(15);
//
//    return 0;
//}

//int main()
//{
//  int a;
//  scanf("%d",&a);
//  printf("%d\n",a);
//  return 0;
//}

//int main()
//{
//   while(1)
//    {
//        printf("hello process, pid: %d\n", getpid());
//        sleep(1);
//    }
//
//   return 0;
//}


//创建一个僵尸进程的例子
//int main()
//{
//  int cnt = 5;
//  pid_t id = fork();
//  if(id == 0)
//  {
//    while(cnt)
//    {
//      printf("i am child, pid: %d, ppid: %d\n", getpid(),getppid());
//      sleep(1);
//      cnt--;
//    }
//
//  }
//  //父进程
//  while(1)
//  {
//    printf("i am father, pid: %d, ppid: %d\n", getpid(), getppid());
//    sleep(1);
//  }
//  return 0;
//}

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
  pid_t id = fork();
  if(id < 0){
    perror("fork");
    return 1;
  }
  else if(id == 0){//child
    printf("I am child, pid : %d\n", getpid());
    sleep(10);
  }
  else{//parent
    printf("I am parent, pid: %d\n", getpid());
    sleep(3);
    exit(0);
  }
  return 0;
}


